home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / linux-bo / etherboo.000 / etherboo / etherboot-2.0 / netboot-freebsd / linuxdef.h < prev    next >
C/C++ Source or Header  |  1996-01-19  |  8KB  |  226 lines

  1. /*
  2.  * This file contains definitions for compiling the FreeBSD-based code
  3.  * on a Linux system. It has been collected from misc. header files of
  4.  * the FreeBSD distribution. Therefore the following copyright conditions
  5.  * apply
  6.  */
  7.  
  8. /*-
  9.  * Copyright (c) 1992, 1993
  10.  *    The Regents of the University of California.  All rights reserved.
  11.  *
  12.  * Redistribution and use in source and binary forms, with or without
  13.  * modification, are permitted provided that the following conditions
  14.  * are met:
  15.  * 1. Redistributions of source code must retain the above copyright
  16.  *    notice, this list of conditions and the following disclaimer.
  17.  * 2. Redistributions in binary form must reproduce the above copyright
  18.  *    notice, this list of conditions and the following disclaimer in the
  19.  *    documentation and/or other materials provided with the distribution.
  20.  * 3. All advertising materials mentioning features or use of this software
  21.  *    must display the following acknowledgement:
  22.  *    This product includes software developed by the University of
  23.  *    California, Berkeley and its contributors.
  24.  * 4. Neither the name of the University nor the names of its contributors
  25.  *    may be used to endorse or promote products derived from this software
  26.  *    without specific prior written permission.
  27.  *
  28.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  29.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  30.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  31.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  32.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  33.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  34.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  35.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  36.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  37.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  38.  * SUCH DAMAGE.
  39.  *
  40.  */
  41.  
  42. #ifndef __LINUXDEF_H__
  43. #define __LINUXDEF_H__
  44.  
  45. #ifdef    __linux
  46. #define    NETBOOT32
  47. #endif
  48.  
  49. #ifdef    __BCC__
  50. #define    NETBOOT16
  51. #define    __signed__        /* cancel definition in sys/types.h */
  52. #endif
  53.  
  54. #include <sys/types.h>
  55.  
  56. typedef    unsigned long Address;
  57.  
  58. /* ANSI prototyping macro */
  59. #ifdef    __STDC__
  60. #define    P(x)    x
  61. #else
  62. #define    P(x)    ()
  63. #endif
  64.  
  65. #ifdef    __linux
  66. #include <asm/byteorder.h>
  67. #include <asm/io.h>
  68. /* Linux reverses the order of the parameters, so change the macros */
  69. #undef outb
  70. #define outb(port,val) \
  71. ((__builtin_constant_p((port)) && (port) < 256) ? \
  72.     __outbc((val),(port)) : \
  73.     __outb((val),(port)))
  74. #undef outw
  75. #define outw(port,val) \
  76. ((__builtin_constant_p((port)) && (port) < 256) ? \
  77.     __outwc((val),(port)) : \
  78.     __outw((val),(port)))
  79. #define    _edata    edata            /* ELF does not prepend a _ */
  80. #define    _end    end
  81. #endif
  82.  
  83. #define    IFNAMSIZ    16
  84. #define    NGROUPS_MAX    16        /* max supplemental group id's */
  85. #define    NGROUPS        NGROUPS_MAX    /* max number groups */
  86. #define    NFSX_V2FH    32
  87. #define MNAMELEN    90        /* length of buffer for returned name*/
  88. #define MAXHOSTNAMELEN    256        /* max hostname size */
  89. #define    SOCK_STREAM    1        /* stream socket */
  90. #define    SOCK_DGRAM    2        /* datagram socket */
  91. #define    NFSMNT_SOFT    0x00000001    /* soft mount (hard is default) */
  92. #define    NFSMNT_WSIZE    0x00000002    /* set write size */
  93. #define    NFSMNT_RSIZE    0x00000004    /* set read size */
  94. #define    NFSMNT_INT    0x00000040    /* allow interrupts on hard mount */
  95. #define    NFSMNT_RESVPORT    0x00008000    /* Allocate a reserved port */
  96. #define    NFSERR_PERM    1
  97. #define    NFSERR_NOENT    2
  98. #define    NFSERR_ACCES    13
  99. #define    AF_UNSPEC    0        /* unspecified */
  100. #define    AF_INET        2        /* internetwork: UDP, TCP, etc. */
  101. #define CLSIZELOG2    0
  102. #define CLSIZE        (1 << CLSIZELOG2)
  103. #define PAGE_SHIFT    12
  104. #define NBPG        (1 << PAGE_SHIFT) /* bytes/page */
  105. #define    CLOFSET        (CLSIZE*NBPG-1)    /* for clusters, like PGOFSET */
  106. #define    BOOTINFO_VERSION 1
  107. #define    N_BIOS_GEOM    8
  108. #define    NODEV        (dev_t)(-1)    /* non-existent device */
  109. #define    OMAGIC        0407        /* old impure format */
  110. #define    NMAGIC        0410        /* read-only text */
  111. #define    ZMAGIC        0413        /* demand load format */
  112. #define QMAGIC          0314        /* "compact" demand load format */
  113. #define __LDPGSZ    4096
  114.  
  115. #define N_GETMAGIC(ex) \
  116.     ( (ex).a_midmag & 0xffff )
  117. #define N_GETMAGIC_NET(ex) \
  118.     (ntohl((ex).a_midmag) & 0xffff)
  119. #define    N_BADMAG(ex) \
  120.     (N_GETMAGIC(ex) != OMAGIC && N_GETMAGIC(ex) != NMAGIC && \
  121.      N_GETMAGIC(ex) != ZMAGIC && N_GETMAGIC(ex) != QMAGIC && \
  122.      N_GETMAGIC_NET(ex) != OMAGIC && N_GETMAGIC_NET(ex) != NMAGIC && \
  123.      N_GETMAGIC_NET(ex) != ZMAGIC && N_GETMAGIC_NET(ex) != QMAGIC)
  124. #define    N_TXTOFF(ex) \
  125.     (N_GETMAGIC(ex) == ZMAGIC ? __LDPGSZ : (N_GETMAGIC(ex) == QMAGIC || \
  126.     N_GETMAGIC_NET(ex) == ZMAGIC) ? 0 : sizeof(struct exec))
  127.  
  128. struct sockaddr {
  129.     u_char    sa_len;            /* total length */
  130.     u_char    sa_family;        /* address family */
  131.     char    sa_data[14];        /* actually longer; address value */
  132. };
  133.  
  134. struct in_addr {
  135.     u_long s_addr;
  136. };
  137.  
  138. struct sockaddr_in {
  139.     u_char    sin_len;
  140.     u_char    sin_family;
  141.     u_short    sin_port;
  142.     struct    in_addr sin_addr;
  143.     char    sin_zero[8];
  144. };
  145.  
  146. struct ifaliasreq {
  147.     char    ifra_name[IFNAMSIZ];        /* if name, e.g. "en0" */
  148.     struct    sockaddr ifra_addr;
  149.     struct    sockaddr ifra_broadaddr;
  150.     struct    sockaddr ifra_mask;
  151. };
  152.  
  153. struct nfs_args {
  154.     struct sockaddr    *addr;        /* file server address */
  155.     int        addrlen;    /* length of address */
  156.     int        sotype;        /* Socket type */
  157.     int        proto;        /* and Protocol */
  158.     u_char        *fh;        /* File handle to be mounted */
  159.     int        fhsize;        /* Size, in bytes, of fh */
  160.     int        flags;        /* flags */
  161.     int        wsize;        /* write size in bytes */
  162.     int        rsize;        /* read size in bytes */
  163.     int        readdirsize;    /* readdir size in bytes */
  164.     int        timeo;        /* initial timeout in .1 secs */
  165.     int        retrans;    /* times to retry send */
  166.     int        maxgrouplist;    /* Max. size of group list */
  167.     int        readahead;    /* # of blocks to readahead */
  168.     int        leaseterm;    /* Term (sec) of lease */
  169.     int        deadthresh;    /* Retrans threshold */
  170.     char        *hostname;    /* server's name */
  171. };
  172.  
  173. struct ucred {
  174.     u_short    cr_ref;            /* reference count */
  175.     uid_t    cr_uid;            /* effective user id */
  176.     short    cr_ngroups;        /* number of groups */
  177.     gid_t    cr_groups[NGROUPS];    /* groups */
  178. };
  179.  
  180. struct nfs_diskless {
  181.     struct ifaliasreq myif;            /* Default interface */
  182.     struct sockaddr_in mygateway;        /* Default gateway */
  183.     struct nfs_args    swap_args;        /* Mount args for swap file */
  184.     u_char        swap_fh[NFSX_V2FH];    /* Swap file's file handle */
  185.     struct sockaddr_in swap_saddr;        /* Address of swap server */
  186.     char        swap_hostnam[MNAMELEN];    /* Host name for mount pt */
  187.     int        swap_nblks;        /* Size of server swap file */
  188.     struct ucred    swap_ucred;        /* Swap credentials */
  189.     struct nfs_args    root_args;        /* Mount args for root fs */
  190.     u_char        root_fh[NFSX_V2FH];    /* File handle of root dir */
  191.     struct sockaddr_in root_saddr;        /* Address of root server */
  192.     char        root_hostnam[MNAMELEN];    /* Host name for mount pt */
  193.     long        root_time;        /* Timestamp of root fs */
  194.     char        my_hostnam[MAXHOSTNAMELEN]; /* Client host name */
  195. };
  196.  
  197. struct bootinfo {
  198.     unsigned int        bi_version;
  199.     unsigned char        *bi_kernelname;
  200.     struct nfs_diskless    *bi_nfs_diskless;
  201.                 /* End of fields that are always present. */
  202. #define    bi_endcommon        bi_n_bios_used
  203.     unsigned int        bi_n_bios_used;
  204.     unsigned long        bi_bios_geom[N_BIOS_GEOM];
  205.     unsigned int        bi_size;
  206.     unsigned char        bi_memsizes_valid;
  207.     unsigned char        bi_pad[3];
  208.     unsigned long        bi_basemem;
  209.     unsigned long        bi_extmem;
  210.     unsigned long        bi_symtab;
  211.     unsigned long        bi_esymtab;
  212. };
  213.  
  214. struct exec {
  215.      unsigned long    a_midmag;    /* flags<<26 | mid<<16 | magic */
  216.      unsigned long    a_text;        /* text segment size */
  217.      unsigned long    a_data;        /* initialized data size */
  218.      unsigned long    a_bss;        /* uninitialized data size */
  219.      unsigned long    a_syms;        /* symbol table size */
  220.      unsigned long    a_entry;    /* entry point */
  221.      unsigned long    a_trsize;    /* text relocation size */
  222.      unsigned long    a_drsize;    /* data relocation size */
  223. };
  224.  
  225. #endif
  226.